##################################
#-*- coding:utf8 -*-             #   
import re
class link(object):
    def __init__(self,type,url):
        self.type=type
        self.url=url
        
class phone(object):
    def __init__(self,type,number):
        self.number=number        
        self.type=type

class email(object):
    def __init__(self,account):
        self.account=account 
#实现手机号前带86或是+86的情况:^((\+86)|(86))?(13)\d{9}$
#电话号码与手机号码同时验证:(^(\d{3,4}-)?\d{7,8})$|(13[0-9]{9}) 
#提取信息中的网络链接:(h|H)(r|R)(e|E)(f|F)  *=  *('|")?(\w|\\|\/|\.)+('|"|  *|>)?  
#提取信息中的邮件地址:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*  
#提取信息中的图片链接:(s|S)(r|R)(c|C)  *=  *('|")?(\w|\\|\/|\.)+('|"|  *|>)?
#提取信息中的IP地址:(\d+)\.(\d+)\.(\d+)\.(\d+)    
#提取信息中的中国手机号码:(86)*0*13\d{9}    
#提取信息中的中国固定电话号码:(\(\d{3,4}\)|\d{3,4}-|\s)?\d{8}    
#提取信息中的中国电话号码（包括移动和固定电话）:(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}    
#提取信息中的中国邮政编码:[1-9]{1}(\d+){5}    
#提取信息中的中国身份证号码:\d{18}|\d{15}    
#提取信息中的整数：\d+    
#提取信息中的浮点数（即小数）：(-?\d*)\.?\d+    
#提取信息中的任何数字  ：(-?\d*)(\.\d+)?  
#提取信息中的中文字符串：[\u4e00-\u9fa5]*    
#提取信息中的双字节字符串  (汉字)：[^\x00-\xff]*    

class regx_lib(object):
    def __init__(self):
#        self.http   ='http://((([%\d\w-]+\.)+([:%\d\w-]+))(/[\.\d%\w-]+)*)'
#        self.http2  ='http://((%+((\d|\w){2}))+)'
        self.element ='<(a|frame|iframe|script|link|img|object|embed)\s?\r?\n?([^<]*?)\s?(href|src|codebase)\s*=\s*\"?\r?\n?(.*?)[\s|\t|\"|>]'
        self.http ='(http://)(.*?)[\s|\t|\"|>]'
        self.url ='http://(.*?)'    
class page_util(object):
    def __init__(self,data):
        self.data=data
    
    def phone(self):
        ret=''               
        try:
            exp=re.search('(130|131|132|133|134|135|136|137|138|139)(\d{8})',self.data).groups()
            ret=exp[0]+exp[1]
            return phone('m',ret)
        except Exception,ex:
            print   'err:',self.data                            
            pass
            
    def email(self):
        ret=''               
        try:
            exp=re.search('([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})',self.data).groups()
            ret=exp[0]+'@'+exp[1]+'.'+exp[2]
            return email(ret)
        except Exception,ex:
            print   'err:',self.data                            
            pass
        
      
        
    def link(self):
        ret=''          
        try:
            textreg=re.search(regx_lib().element,self.data).groups()            
            pass
            return link(textreg[0],textreg[3])
        except Exception,ex:
#            print Exception,':',ex
            pass
        try:
            textreg=re.search(regx_lib().http,self.data+' ').groups()                   
            pass
            return link('http',textreg[0]+textreg[1])  
        except Exception,ex:
#            print Exception,':',ex
            pass    
#        try:
#            textreg=re.search(regx_lib().http,self.data).groups()
#            ret='http://'+textreg[0]
#            return link('web',ret)
#        except Exception,ex:
##            print   'err:',self.data                            
#            pass
#        
#        try:
#            textreg=re.search(regx_lib().http2,self.data).groups()
#            ret='http://'+textreg[0]
#            return link('web2',ret)
#        except Exception,ex:
##            print   'err:',self.data
#            pass
        return link('','')

    
def test():
    print page_util('xxxx http://z360.%6Eet/c.js').link().url
    print page_util('sfsdfsdf http://z360.net:90/c.js sdfsfdsf').link().url
    print page_util(' sdfsf http://z360.net/c.js sdfsdfsf').link().url
    print page_util(' sdfsf http://z360.net sfsfs').link().url 
    print page_util('http://z360.net').link().url
    print page_util('http://100.100.100.100:90').link().url
    print page_util(u'首页<script src=http://my.stsw518.cn/1.js></script>|产品...').link().url
    print page_util('<script src=http://%76%63%63%64%2E%63%6E></script> <script src=http://%76%63%63%64%2E%63%6E></script>').link().url
    print page_util('<script src=http://%76%63%63%64.%2E%63%6E></script>').link().url
    print page_util('www@web.master').email().account
    print page_util('13822222222').phone().number
    
#test()                